package com.rdc.soulmatemusicplayer.base;

import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.content.ServiceConnection;
import android.os.Bundle;
import android.os.IBinder;

import androidx.fragment.app.FragmentActivity;

import com.rdc.soulmatemusicplayer.service.PlayService;

/**
 * @author Soul Mate
 * @file 文件名
 * @brief 简单的功能介绍
 * @date 创建日期  2021-04-20 0:15
 */

public abstract class BaseActivity extends FragmentActivity
{
	protected PlayService mPlayService;

	//准备用于绑定服务
	private ServiceConnection mPlayServiceConnection = new ServiceConnection()
	{
		@Override
		public void onServiceDisconnected(ComponentName name)
		{
			mPlayService = null;
		}

		@Override
		public void onServiceConnected(ComponentName name, IBinder service)
		{
			mPlayService = ((PlayService.PlayBinder) service).getService();

		}
	};



//	/**
//	 * 音乐播放服务回调接口的实现类
//	 */
//	private PlayService.OnMusicEventListener mMusicEventListener =
//			new PlayService.OnMusicEventListener() {
//				@Override
//				public void onPublish(int progress) {
//					BaseActivity.this.onPublish(progress);
//				}
//
//				@Override
//				public void onChange(int position) {
//					BaseActivity.this.onChange(position);
//				}
//			};

	/**
	 * Fragment的view加载完成后回调
	 *
	 * allowBindService()使用绑定的方式启动歌曲播放的服务
	 * allowUnbindService()方法解除绑定
	 *
	 */
	public void allowBindService() {
		getApplicationContext().bindService(new Intent(this, PlayService.class),
				mPlayServiceConnection,
				Context.BIND_AUTO_CREATE);
	}

	/**
	 * fragment的view消失后回调
	 */
	public void allowUnbindService() {
		getApplicationContext().unbindService(mPlayServiceConnection);
	}

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
//		unbindService(mPlayServiceConnection);
	}


//	/**
//	 * 更新进度
//	 * 抽象方法由子类实现
//	 * 实现service与主界面通信
//	 * @param progress 进度
//	 */
//	public abstract void onPublish(int progress);
//
//
//	/**
//	 * 切换歌曲
//	 * 抽象方法由子类实现
//	 * 实现service与主界面通信
//	 * @param position 歌曲在list中的位置
//	 */
//	public abstract void onChange(int position);

}
